package site.isscloud.project.service;

import site.isscloud.project.domain.PjAlarmEvent;
import site.isscloud.project.domain.PjAlarmRecord;
import java.util.List;
import java.util.Date;

/**
 * 告警事件Service接口
 */
public interface IPjAlarmEventService {
    /**
     * 查询告警事件
     */
    PjAlarmEvent selectPjAlarmEventById(Long id);

    /**
     * 查询告警事件列表
     */
    List<PjAlarmEvent> selectPjAlarmEventList(PjAlarmEvent pjAlarmEvent);

    /**
     * 新增告警事件
     */
    int insertPjAlarmEvent(PjAlarmEvent pjAlarmEvent);

    /**
     * 修改告警事件
     */
    int updatePjAlarmEvent(PjAlarmEvent pjAlarmEvent);

    /**
     * 批量删除告警事件
     */
    int deletePjAlarmEventByIds(Long[] ids);

    /**
     * 删除告警事件信息
     */
    int deletePjAlarmEventById(Long id);

    /**
     * 根据事件编号查询
     */
    PjAlarmEvent selectPjAlarmEventByEventNo(String eventNo);

    /**
     * 处理告警记录并关联事件
     */
    void processAlarmRecord(PjAlarmRecord alarmRecord);

    /**
     * 关闭超时事件
     */
    void closeTimeoutEvents();

    /**
     * 查询活跃的事件
     */
    List<PjAlarmEvent> selectActiveEvents();

    /**
     * 处理事件（标记为已处理）
     */
    int handleEvent(Long eventId, String handledResult, String handledBy, Date handledTime);

    /**
     * 根据设备、通道、类型、米标查询活跃事件
     */
    List<PjAlarmEvent> selectActiveEventsByDeviceChannelTypeMeter(String deviceNo, Integer chanel, Integer alarmType, Integer meterMark);

    List<PjAlarmEvent> selectActiveEventsByDeviceChannelType(String deviceNo, Integer chanel, Integer alarmType);
}